문서의 임의 삭제는 제재 대상으로, 문서를 삭제하려면 삭제 토론을 진행해야 합니다. 문서 보기문서 삭제토론 AMD ZEN 마이크로아키텍처 (문단 편집) ==== 실수부 ==== ZEN의 실수부는 2개의 128비트 FADD 유닛과 2개의 128비트 FMUL/FMAC 유닛으로 구성되어 초기 불도저와 유사한 2+2의 구조로 회귀하였으며, 불도저 아키텍처에서는 초기 불도저 이후 스팀롤러에서 부터는 2+1 구조로 축소되었다. 초기 불도저 아키텍처는 2개의 128-bit FMUL/FMAC 유닛과 2개의 128-bit 정수 벡터 연산 유닛(Vector ALU)으로 구성된 구조라서 뒤의 2개 유닛은 실수연산 능력이 없었던 반면, ZEN에서는 4개 유닛 모두 실수 및 실수 벡터 연산이 가능하도록 기능이 확장되었다. 공식 발표된 블록다이어그램상의 표기 상으로는 실수 유닛의 파이프라인 구조가 2+2의 대칭 구조를 가지고 있는 것으로 되어 있지만, 실제 유닛들이 담당하는 기능은 대칭적이지 않다. 예를 들어 정수 벡터 덧셈의 경우 FPU0, FPU1, FPU3 세 유닛이 동시에 처리 가능하고 실수 벡터 덧셈은 FPU2, FPU3이 동시 처리 가능, 실수 벡터 곱셈은 FPU0과 FPU1이 실행하게 되어있는 등 사실상 비대칭이며 이는 차라리 기존 K7/K8/K10에서의 실수 유닛의 구조였던 FADD/FMUL/FMISC의 비대칭 구조의 확장에 가깝다. ZEN의 실수부가 이렇게 비대칭적 구조를 가지고 있어도 연산에 필요한 레이턴시나 실제 코드에서의 명령어 혼입을 고려하면 최대 동시에 128-bit 데이터 폭으로 명령어 4개를 수행하는 것이 가능하며 이는 하스웰 이후의 인텔 아키텍처 실수부의 2+1 구조의 256-bit 실수 벡터 유닛의 연산 능력과 비교해도 연산 대상과 그 시나리오에 따라 앞서거니 뒷서거니 할 수 있는 수준으로 예상된다. 예를 들어, 코드 내 명령어들이 SSE 명령어에 치중되었을 경우, ZEN은 최다 4개 명령어를 실행 가능한데 비해, 인텔은 최다 3개만 실행 가능하며 실질적인 아웃풋은 오히려 ZEN이 유리하게 된다. 반면, 코드가 AVX2 명령어에 치중되었다면 ZEN은 AVX2 명령어를 SSE로 쪼개어 2번에 걸쳐 실행해야 하므로 최대 2개 명령을 실행할 수 있는데 비해 인텔 아키텍처는 최다 3개씩 실행할 수 있다. 6개로 분할된 정수부의 명령어 스케줄링 큐와는 달리 실수부의 명령어 스케줄링 큐는 단일 구조의 스케줄러로 이루어져 있으며 해당 스케줄링 단계에서 4개의 실수 유닛이 선택되어 실행 μOP 포트를 통해 공급되는 구조이다. 스케줄링 큐 내의 총 엔트리 수는 96개이다. 독특하게도 실수부의 명령어 큐는 스케줄링 큐와 논-스케줄링 큐의 2단계로 분리되어 있는데 굳이 단계만 차지하는 듯 보이는 논-스케줄링 큐는 μOP의 전달을 일률적으로 지연시켜서 정수부의 로드/스토어 유닛에서 로드되는 메모리 값들이 실수부 레지스터로 전달되는 타이밍을 맞추기 위해서라고 한다.저장 버튼을 클릭하면 당신이 기여한 내용을 CC-BY-NC-SA 2.0 KR으로 배포하고,기여한 문서에 대한 하이퍼링크나 URL을 이용하여 저작자 표시를 하는 것으로 충분하다는 데 동의하는 것입니다.이 동의는 철회할 수 없습니다.캡챠저장미리보기